from typing import List

def generate_clues(pin: str) -> List[List[int]]:
    """
    根据题目规则生成三位数字符串的所有线索。
    
    参数:
        pin: 长度为3的数字字符串，例如 "235"
    
    返回:
        clues: 包含所有符合条件的线索，每个线索用一个列表表示，
               可能的形式有：
               [-1, -1]                # 素数且不重复
               [a, 0] 或 [a, 1]        # 第 a 位是偶数或奇数
               [b, -1, -1]             # 第一位是 b
               [-1, b, -1]             # 第二位是 b
               [-1, -1, b]             # 第三位是 b
    """
    # 验证输入
    if len(pin) != 3 or not pin.isdigit():
        raise ValueError("请输入一个长度为3的数字字符串")

    digits = [int(ch) for ch in pin]
    clues: List[List[int]] = []

    # 1. [-1, -1]: 每位都是素数且三位互不相同
    prime_set = {2, 3, 5, 7}
    if all(d in prime_set for d in digits) and len(set(digits)) == 3:
        clues.append([-1, -1])

    # 2. [a, 0] 或 [a, 1]: 第 a 位是偶数（0）或奇数（1）
    for idx, d in enumerate(digits, start=1):
        if d % 2 == 0:
            clues.append([idx, 0])
        else:
            clues.append([idx, 1])

    # 3. [b, -1, -1], [-1, b, -1], [-1, -1, b]: 指定位置等于 b
    clues.append([digits[0], -1, -1])
    clues.append([-1, digits[1], -1])
    clues.append([-1, -1, digits[2]])

    return clues


# 示例
if __name__ == "__main__":
    test_pin = "235"
    print(generate_clues(test_pin))
    # 输出: [[-1, -1], [1, 0], [2, 1], [3, 1], [2, -1, -1], [-1, 3, -1], [-1, -1, 5]]
